package com.framework.mapper.base;

import java.util.List;

/**
 * @author 龘鵺
 * @version 1.0
 * @className com.framework.mapper.base
 * @description 公共mapper接口类
 * @datetime 2025-05-09 11:01:20
 */
public interface Mapper<T> {

    /**
     * @param row 类
     * @return int
     * @author 龘鵺
     * @title 公共非空字段验证添加
     * @description 公共非空字段验证添加
     * @datetime 2025-05-09 10:56:43
     */
    int insertSelective(T row);

    /**
     * @param list 集合
     * @return int
     * @author 龘鵺
     * @title 批量添加
     * @description 批量添加
     * @datetime 2025-05-09 10:56:43
     */
    int insertList(List<T> list);

    /**
     * @param row 类
     * @return int
     * @author 龘鵺
     * @title 公共根据编号非空字段验证修改
     * @description 公共根据编号非空字段验证修改
     * @datetime 2025-05-09 10:56:43
     */
    int updateByPrimaryKeySelective(T row);

    /**
     * @param list 集合
     * @return int
     * @author 龘鵺
     * @title 公共根据编号非空字段验证批量修改
     * @description 公共根据编号非空字段验证批量修改
     * @datetime 2025-05-09 10:56:43
     */
    int updateList(List<T> list);

    /**
     * @param row 类
     * @return int
     * @author 龘鵺
     * @title 公共根据条件逻辑删除数据
     * @description 公共根据条件逻辑删除数据
     * @datetime 2025-05-09 10:56:43
     */
    int delete(T row);

    /**
     * @param row 类
     * @return int
     * @title 公共根据条件批量逻辑删除数据
     * @description 公共根据条件批量逻辑删除数据
     * @author 龘鵺
     * @datetime 2025-05-09 10:56:43
     * @version 1.0
     */
    int batchDeleteList(T row);

    /**
     * @param id 编号
     * @return T
     * @author 龘鵺
     * @title 公共根据编号查询数据
     * @description 公共根据编号查询数据
     * @datetime 2025-05-09 10:56:43
     */
    T selectByPrimaryKey(Long id);

    /**
     * @param row 1 类
     * @return int 0不存在， 大于等于1存在
     * @title 公共根据条件查询是否重复存在
     * @description 公共根据条件查询是否重复存在
     * @author 龘鵺
     * @datetime 2025-05-09 10:56:43
     */
    int isExist(T row);

    /**
     * @param row 类
     * @return T
     * @author 龘鵺
     * @title 公共根据条件查询数据
     * @description 公共根据条件查询数据
     * @datetime 2025-05-09 10:56:43
     */
    T selectByParam(T row);

    /**
     * @param row 类
     * @return T
     * @author 龘鵺
     * @title 公共根据条件查询数据
     * @description 公共根据条件查询数据
     * @datetime 2025-05-09 10:56:43
     */
    T selectByRow(T row);

    /**
     * @param row 类
     * @return java.util.List<T>
     * @author 龘鵺
     * @title 公共根据条件分页查询
     * @description 公共根据条件分页查询
     * @datetime 2025-05-09 10:56:43
     */
    List<T> findPageList(T row);

    /**
     * @param row 类
     * @return int
     * @author 龘鵺
     * @title 公共根据条件分页查询总数
     * @description 公共根据条件分页查询总数
     * @datetime 2025-05-09 10:56:43
     */
    int findPageListCount(T row);

    /**
     * @param row 类
     * @return java.util.List<T>
     * @author 龘鵺
     * @title 公共根据条件查询集合
     * @description 公共根据条件查询集合
     * @datetime 2025-05-09 10:56:43
     */
    List<T> findByList(T row);

}
